package vl.scanfile.cmmn.json;

import java.util.LinkedHashMap;

/**
 * ìŠ¤í”„ë§�MVCì—�ì„œ Json Viewë¡œ ë„˜ê²¨ì¤„ ëª¨ë�¸ VO.
 * <p>
 * Mapì�„ ìƒ�ì†�ë°›ì•˜ìœ¼ë¯€ë¡œ ì—”íŠ¸ë¦¬ì�˜ ì¶”ê°€ì™€ ì‚­ì œê°€ ë§µì²˜ëŸ¼ ê°€ëŠ¥í•˜ì§€ë§Œ, <br>
 * ì„±ê³µ ê²°ê³¼ê°’ì�€ í•˜ë‚˜ë§Œ ìžˆì–´ì•¼ í•˜ë¯€ë¡œ ë‚´ë¶€ì �ìœ¼ë¡œ successë�¼ëŠ” í‚¤ê°’ì�€ 
 * ìƒ�ì„±ìž�ë¡œ ì„¸íŒ…í•˜ê±°ë‚˜ {@link #setSuccess(boolean)}ë¡œ ì„¸íŒ…í•˜ìž�.
 * <p>
 * ë””í�´íŠ¸ ìƒ�ì„±ìž� {@link #JsonVO(boolean, Object)}ë¥¼ ì�´ìš©í•˜ì—¬ jsonìœ¼ë¡œ ìž‘ì„±ì‹œ
 * <p>
 * { success : true(|false), <br>
 * data : { ... } <br>
 * } <br>
 * ì�˜ í˜•íƒœë¥¼ ê°€ì§„ë‹¤.
 * 
 * @author moon9
 * @version 2014.02.10
 */
public class JsonVO extends LinkedHashMap<String, Object> {

	
	/**
	 *  use serialVersionUID
	 */
	private static final long serialVersionUID = 3120522313355327761L;
	
	/**
	 *  default constructor
	 */
	public JsonVO()	{}
	
	/**
	 * ìƒ�ì„±ìž�ë¡œ {@link Object} í˜•ì�˜ ë�°ì�´í„° ê°’ê³¼ boolean ê°’ì�˜ ê²°ê³¼ ê°’ì�„ ë°›ì•„ì„œ ì €ìž¥í•œë‹¤.
	 * @param success 
	 * 			ì„±ê³µ ê²°ê³¼ê°’(boolean)
	 * @param data
	 * 			jsonìœ¼ë¡œ ìƒ�ì„±í•  ë�°ì�´í„°(Object)
	 */
	public JsonVO(boolean success, Object data)	{
		addObject("success", success);
		addObject("data", data);
	}
	
	/**
	 * ìƒ�ì„±ìž�ë¡œ ë�°ì�´í„°ê°’ì�„ ì €ìž¥í•œë‹¤. ê¸°ë³¸ì �ìœ¼ë¡œ ê²°ê³¼ê°’ì�€ successë¡œ ì €ìž¥í•¨
	 * @param data
	 * 			jsonìœ¼ë¡œ ìƒ�ì„±í•  ë�°ì�´í„°(Object)
	 */
	public JsonVO(Object data)	{
		addObject("success", true);
		addObject("data", data);
	}
	
	/**
	 * JsonVOì—� keyê°’ê³¼ valueë¥¼ ì¶”ê°€í•œë‹¤.
	 * @param str 
	 * 			key
	 * @param obj
	 * 			value
	 */
	public void addObject(String str, Object obj)	{
		this.put(str, obj);
	}
	
	/**
	 * 
	 * @return JsonVOì—� ë‹´ê²¨ì§„ success ê°’
	 */
	public boolean isSuccess() {
		return (Boolean) this.get("success");
	}
	
	/**
	 * successê°’ì�„ ì„¸íŒ…í•œë‹¤
	 * @param success
	 * 			boolean ê°’
	 */
	public void setSuccess(boolean success) {
		addObject("success", success);
	}
	
	/**
	 * JsonVOì—� ì¶”ê°€ë�œ ë�°ì�´íƒ€ ê°’, {@link #setData(Object)} í˜¹ì�€ {@link #JsonVO(Object)} ë“±ìœ¼ë¡œ ì„¸íŒ…ë�œ í‚¤ê°€ "data" ì�¸ Object
	 * @return Object
	 */
	public Object getData() {
		return this.get("data");
	}
	
	/**
	 * ë�°ì�´í„°ë¥¼ ì„¸íŒ…í•œë‹¤. {@link #addObject(String, Object)} ì—�ì„œ keyê°’ìœ¼ë¡œ "data"ê°€ ë‚´ë¶€ì �ìœ¼ë¡œ ì„¸íŒ…ë�œë‹¤.
	 * @param data
	 * 			Object
	 */
	public void setData(Object data) {
		addObject("data", data);
	}
	
	/**
	 * í‚¤ê°’ì�´ "totalCount"
	 * @return Integerê°’ìœ¼ë¡œ í‚¤ê°’ì�´ "totalCount"ì�¸ ê°’
	 */
	public int getTotalCount() {
		return (Integer) this.get("totalCount");
	}
	
	/**
	 * ë³¸ íŒ¨í‚¤ì§€ UI ì»´í�¬ë„ŒíŠ¸ì—� ë”°ë�¼(grid, tree ë“±) totalCountê°€ í•„ìš”í•  ë•Œ ì„¸íŒ…í•œë‹¤. 
	 * @param totalCount
	 * 			intíƒ€ìž…ìœ¼ë¡œ {@link #addObject(String, Object)} ì—�ì„œ í‚¤ê°’ "totalCount"ì—� ì €ìž¥ë�˜ëŠ” ê°’
	 */
	public void setTotalCount(int totalCount) {
		addObject("totalCount", totalCount);
	}
	
	/**
	 * í‚¤ê°’ì�´ "message"ì�¸ ê°’
	 * @return
	 */
	public String getMessage() {
		return (String) this.get("message");
	}
	
	/**
	 * ajax callback functionì—�ì„œ í•„ìš”í•œ message ë“±ì�˜ ì„¸íŒ…ì�„ ìœ„í•œ ê°’
	 * @param message
	 * 			String value
	 */
	public void setMessage(String message) {
		addObject("message", message);
	}	
	
	public String getReturnUrl() {
		return (String) this.get("returnurl");
	}

	public void setReturnUrl(String returnurl) {
		addObject("returnurl", returnurl);
	}

	public boolean isWarning() {
		return (Boolean) this.get("warning");
	}

	public void setWarning(boolean warning) {
		addObject("warning", warning);
	}
}
